Skip to main content

CMCD Overview

Common Media Client Data (CMCD) is a standard (CTA-5004) that lets video players send real-time playback data to the CDN with every media request. This data travels alongside the request itself, either as HTTP query parameters or headers, so no additional connection or reporting pipeline is required.

What information CMCD provides

CMCD exposes client-side context that is normally invisible to the delivery layer, including:

  • Buffer state - current buffer length and starvation status
  • Bitrate and quality - requested and encoded bitrate, top bitrate available in the manifest
  • Throughput - measured and requested throughput as seen by the player
  • Object type and stream type - manifest, audio, video, init segment, live vs. VOD
  • Session and content identifiers - session ID and content ID for correlating requests belonging to the same playback session
  • Playback rate and deadline - playback speed and time until the requested object is needed for rendering

How IO River uses CMCD

Traffic visibility

Because CMCD is attached to every request, IO River can aggregate this data across all sessions to show real playback behavior per CDN provider and region, going beyond standard access logs that only describe the request/response itself.

You can view these metrics in the Traffic Analytics page, and investigate the type of media-related traffic behaviors. For example, you can see what percentage of the clients receive segments with high bitrate compared to medium and low bitrate, or you can drill-down to video sessions that experience buffer starvation and try to understand why they occur by comparing them with sessions that do not have buffer starvation.

Quality of experience (QoE) analysis

Signals like buffer starvation, requested vs. delivered bitrate, and bitrate stability let IO River measure actual viewer experience, not just delivery performance, and correlate QoE degradation with specific CDN providers, edge locations, and networks (ASNs).

This provides you with a clear view of the playback quality your users experience.

How to Enable CMCD

IO River automatically collects CMCD data, as long as the player sends it, either as part of the reuqest query string or as request headers.

Many standard players, including dash.js, hls.js, Shaka Player, and many TV viewer boxes such as Roku support CMCD. However, in most cases it is not enabled by default. You will need to enable CMCD in your player so IO River can use it. For more information see Enable CMCD in Players

CMCD Information Reported

IO River collects and presents the following information:

DataDescription
Object TypeThe media type delivered
Object DurationThe media object length in seconds
Stream TypeThe stream type: VOD or live streaming
Streaming FormatThe stream protocol: HLS, DASH, etc.
Buffer LengthThe buffer length of the player, longer is better
Buffer StarvationPlayback delays due to buffer starvation, “false” is good
Startup DelayPlayback delays due to initial buffering or seeking, “false” is good
DeadlineThe time until a requested object is needed in order to avoid playback delays - longer is better
Requested ThroughputThe throughput requested by the player for optimal playback
Measured ThroughputThe throughput actually measured by the player
Top BitrateThe bitrate required for optimal playback, given current codec, sizing, etc.
Encoded BitrateThe bitrate actually delivered to the player